package com.gitee.l0km.codegen.annotations;

import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.gitee.l0km.common.spring.core.annotation.AliasFor;

/**
 * 定义在枚举变量支持类
 * @author guyadong
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface EnumSupportType {
	/**
	 * 支持的枚举类型
	 */
	@SuppressWarnings("rawtypes")
	@AliasFor("associated")
	Class<? extends Enum> value() default Enum.class;
	/**
	 * @since 2.2.3 
	 */
	@SuppressWarnings("rawtypes")
	@AliasFor("value")
	Class<? extends Enum> associated() default Enum.class;
	/** 
	 * 用于标记类成员的注解类型
	 * @since 2.2.3 
	 */
	Class<? extends Annotation>[] memberAnnotations() 
		default{EnumNameDirectory.class,EnumCommentDirectory.class,EnumNameCommentDirectory.class};
}
